next up previous
Next: 2 Background Up: System Support for Previous: System Support for

1 Introduction

The OpenGL graphics system [14,11] is a window system independent software interface to graphics hardware for 3D rendering. GLX [8] is the OpenGL extension to the X Window System that specifies how OpenGL integrates with X. The GLX specification explicitly allows (but does not require) implementations to support direct rendering of OpenGL commands to the graphics hardware. Direct rendering allows OpenGL commands to bypass the normal X protocol encoding, transport, and X server dispatch. Through sufficient hardware and system software support, OpenGL rendering can achieve the maximum rendering performance from the hardware.

Direct rendering naturally implies that the direct rendering process is running on the local graphics workstation (as opposed to running over the network). Direct rendering is not available if the OpenGL process is connected to a remote X server.

For interactive 3D applications, the maximum possible rendering performance is critical to the success of the application. When available, direct rendering has a substantial performance advantage over rendering indirectly via the X server, i.e., indirect rendering. Instead of using the X server as a proxy for rendering, rendering commands are sent directly to the graphics hardware. Direct rendering can be thought of as a means of ``cutting out the middle man.'' Indirect rendering is still useful (and required by GLX) because it allows the same network extensibility and inter-operability of traditional X clients.

This paper discusses how Silicon Graphics, Inc. (SGI) implements direct rendering in its OpenGL implementation through a combination of hardware features, operating system support, X server support, and X and OpenGL library support. SGI implements the described facilities in IRIX 5.3.gif The next section discusses the goal of direct rendering, SGI's approach for supporting virtualized direct rendering, and support for direct rendering by OpenGL's predecessor and other direct rendering graphics systems. Section 3 describes OpenGL's implementation model and the requirements implied for implementing direct rendering. Section 4 presents how SGI virtualizes access to the graphics hardware to support direct rendering. Section 5 addresses other issues not strictly related to virtualized direct access rendering but still important for supporting direct rendering.



next up previous
Next: 2 Background Up: System Support for Previous: System Support for



mjk@sgi.com